#include <iostream>
#include <string>
#include <vector>
#include <climits>
#include <map>
#include <cstdlib>
using namespace std;

int maxNumberOfBalloons(string text) 
{
    map<char,int> recmap;
    for(int i=0;i!=text.size();++i){
        if(text[i] == 'b' || text[i] == 'a' || text[i] == 'l' || text[i] == 'o' || text[i] == 'n'){
            ++recmap[text[i]];
        }
    }
    map<char,int> comp={{'b',1},{'a',1},{'l',2},{'o',2},{'n',1}};

    int res=INT_MAX;
    
    for(auto p=comp.begin();p != comp.end() ;++p){
        char which=p->first;
        int times=p->second;
        if(recmap.find(which) == recmap.end()){
            return 0;
        }else{
            res=min(res,recmap[which]/times);
        }
    }
    return res;
}


vector<int> findAnagrams(string s, string p) 
{
    vector<int> result;
    if(s.size()==0||p.size()==0)
        return result;
    vector<int>vs(26,0);//用数组来创建两个哈希表；
    vector<int>vp(26,0);
    //主要的内容；
    for(char c:p)//遍历p字符串；结果存入到vp中；存入的是数字；
        vp[c-'a']++;
    //主要的算法内容；
    for(int i=0;i<s.size();i++)//遍历给定的要查找的字符串；
    {        
        if(i>=p.size())//如果说此时的下标大于滑动窗口的长度；
            vs[s[i-p.size()]-'a']--;
        vs[s[i]-'a']++;//将当前的字符加入到滑动窗口中；    
        if(vs==vp)//注意这里只比较数组的内容并不需要比较顺序；
            result.push_back(i-p.size()+1);
    }
    return result;
}

int main()
{
    string c;
    cin>>c;
    cout<<maxNumberOfBalloons(c)<<endl;
}